package cn.tedu.staticx;

public class StaticDemo2 {
    public static void main(String[] args) {
        A a = new A();
    }
}
//验证执行顺序
class A{
    //属性
    B b = new B();
    //静态代码块
    static{
        System.out.println("A类的静态代码块");
    }

    //构造代码块
    {
        //a = 6;//先标记有个a变量 并且赋值为整数6 继续向后加载，如果后边加载到了关于a变量的定义
        //则将当前记录的值6赋值给a变量；如果后边没有关于a变量的定义 则编译会报错
        //
        //System.out.println(a);//编译会报错
        System.out.println("A类的构造代码块");
    }
    //构造方法
    public A(){
       // System.out.println(a);//8
        System.out.println("A类的构造方法");
    }
    //属性
    ////    B b = new B();
    ////    int a;
    //    //int a = 8;//构造方法中访问时a的值为8  首先a的值先被赋值为构造代码块中的6 但是马上就被8覆盖了
}
class B{
    static{
        System.out.println("B类的静态代码块");
    }
    {
        System.out.println("B类的构造代码块");
    }
    public B(){
        System.out.println("B类的无参构造");
    }
}